package com.wash.shoes.domain.dy.model;

import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * @author lijianguo
 * @Date 29/03/2025 14:02
 * 创建预约单
 **/
@Data
public class CreateBookDto  implements Serializable {

    static final long serialVersionUID = 1L;

    // 是 抖音侧订单号
    String order_id;

    // 是 外部预约单号
    String out_book_no;

    // 是 用户OpenID
    String open_id;

    // 是 每个item的预约信息，详见ItemBookInfo
    List<ItemBookInfo> item_book_info_list;

    @Data
    public static class ItemBookInfo{

        // 是 预约门店的poiId，实际存储的是int64类型的值
        String poi_id;

        // 是 预约门店的名称，参考商铺同步接口中的店铺名称（name）
        String shop_name;

        // 是 预约门店的外部店铺id，参考商铺同步接口中的接入方店铺id（supplier_ext_id）
        String ext_shop_id;

        // 是 商品id
        String goods_id;

        // 是 预约的开始时间（ms），13位毫秒时间戳
        Long book_start_time;

        // 是 预约的结束时间（ms），13位毫秒时间戳
        //注意：需满足 当前时间< book_start_time < book_end_time，并且book_end_time必须是180天之内
        Long book_end_time;

        // 否 用户信息，详见UserInfo
        List<UserInfo> user_info_list;

        // 否 预约的商品SKU信息，需要加价时必填，详见BookSkuInfo 同一个预约单的所有book_sku_info信息需要完全相同
        BookSkuInfo book_sku_info;
    }

    @Data
    public static class UserInfo{

        // 是 使用人名称
        String name;

        // 是 电话号码
        String phone;

        // 是 身份证号码
        String id_card_no;
    }

    @Data
    //  预约的商品SKU信息，需要加价时必填，详见BookSkuInfo 同一个预约单的所有book_sku_info信息需要完全相同
    public static class BookSkuInfo{

        // 否 sku金额 加价的商品价格不能大于预售单的商品价格两倍
        Integer price;

        // 是 预约的商品sku_id
        String sku_id;

        // 是 sku_id类型 1-商品库 skuId 2-非商品库skuId
        Integer sku_id_type;
    }


}
